package com.example.skudemo.dto;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.*;
import java.math.BigDecimal;

@Data
public class SpuBaseDTO {

    @Length(max = 50,message = "商品名称最大长度50")
    @NotBlank(message = "商品名称不能为空")
    private String name;


    @Length(max = 50,message = "关键词最大长度50")
    @NotBlank(message = "关键词不能为空")
    private String keyword;


    @Length(max = 100,message = "简介最大长度100")
    @NotBlank(message = "简介不能为空")
    private String introduction;

    /**
     * 关联到category表主键id
     */

    private Integer categoryId;

    /**
     * 关联到brand表主键id
     */
    private Integer brandId;

    /**
     * 封面图
     */
    @Length(max = 200,message = "封面图片地址不能大于200")
    @NotBlank(message = "封面图不能为空")
    private String picUrl;

    /**
     * 视频地址
     */
    private String videoUrl;

    /**
     * 商品轮播图地址
     */
    private String sliderPicUrls;

    /**
     * 单位,关联到dict表主键id
     */
    @NotNull(message = "单位不能为空")
    private Integer unit;

    /**
     * 单双规格,0表示单规格,1表示多规格(sku)
     */
    @NotNull(message = "单双规格不能为空")
    private Integer specType;

    /**
     * 商品单价
     */
    @DecimalMin(value="0.00", message = "金额不能小于0" )
    @DecimalMax(value="99999999.99", message = "金额不能大于99999999.99")
    private BigDecimal price;

    /**
     * 商品市场价
     */
    private BigDecimal marketPrice;

    /**
     * 商品折扣价
     */
    private BigDecimal discountPrice;

    /**
     * 商品vip价
     */
    private BigDecimal vipPrice;

    /**
     * 商品成本价
     */
    private BigDecimal costPrice;

    /**
     * 库存(如果是多规格求和)
     */
    @Min(value = 0,message = "库存不能小于0")
    @NotNull(message = "库存不能为空")
    private Integer stock;

    /**
     * 排序
     */
    @Min(value = 1,message = "排序不能小于1")
    private Integer sort;


    /**
     * 是否热销,0表示不是,1表示是
     */
    @Max(value = 1,message = "是否热销不能大于1")
    @Min(value = 0,message = "是否热销不能小于0")
    private Integer isHot;

    /**
     * 是否优惠推荐,0表示不是,1表示是
     */
    @Max(value = 1,message = "是否优惠推荐不能大于1")
    @Min(value = 0,message = "是否优惠推荐不能小于0")
    private Integer isBenefit;

    /**
     * 是否精品,0表示不是,1表示是
     */
    @Max(value = 1,message = "是否精品不能大于1")
    @Min(value = 0,message = "是否精品不能小于0")
    private Integer isBest;

    /**
     * 是否新品,0表示不是,1表示是
     */
    @Max(value = 1,message = "是否新品不能大于1")
    @Min(value = 0,message = "是否新品不能小于0")
    private Integer isNew;

    /**
     * 是否优品推荐,0表示不是,1表示是
     */
    @Max(value = 1,message = "是否优品推荐不能大于1")
    @Min(value = 0,message = "是否优品推荐不能小于0")
    private Integer isGood;

    /**
     * 赠送积分
     */
    private Integer giveIntegral;


    /**
     * 商品详情
     */
    @NotBlank(message = "商品详情不能为空")
    private String content;


    /**
     * 销售属性值:用英文,拼接
     */
    @NotBlank(message = "销售属性值不能为空")
    private String attribute;
    /**
     * 备注
     */
    private String remark;
}
